In an effort to increase the functionality of computers, users have created communication networks interconnecting computers via overwirings through appropriate interfaces. These networks permit a user on one computer to exchange data with and to execute programs on other computers. The ability to execute a program on a second computer connected on the network permits a program to be partitioned among computers so as to speed the computation of the program. In many instances a program is partitioned to make use of special hardware on another computer to further speed the computations. An example of this is a computer having special vector processing hardware. A computer without such vector processing hardware transfers vector data to the computer with the vector processing hardware, which then performs the vector calculations using the special hardware and returns the results to the computer without the vector processing hardware.
Such a transfer of data over a network results in increased speed of computation only if the amount of time required for data transfer over the network is less than the amount of time required to make the computations once the data have been transferred. The network must be able to transfer large amounts of data quickly and reliably. The advent of the supercomputer has increased the rate at which data must be transferred over the network, including interfaces, in order to justify such transfers in light of the speed at which this type of computer processes data once it is available.
Although supercomputers execute instructions quickly, the various architectures of the supercomputers make each design more appropriate for some computations than for others. For example, massively parallel processors are more useful for executing programs which contain repetitive instructions, such as loops, while vector supercomputers are more useful in executing vector instructions. Since a single calculation may have both repetitive instructions, such as loops, and vector instructions, a significant increase in speed may be obtained by partitioning a program across several supercomputers and permitting them to transfer data among themselves by way of a high speed network.
A standard for interfaces for one such high speed communication network for use with supercomputers has been proposed in the X3T9 American National Standard for Information systems (ANSI) specification and is termed the HIgh performance Parallel Interface (HIPPI). This interface standard permits point-to-point communication between two supercomputers at speeds of up to 1600 Mbits/sec. However, because of this high bandwidth, the communications link may be under-utilized due to interface bottlenecks causing periods during which no data can be transferred. These periods typically occur during the time the data, which have been previously transferred, are being used in computations or passed through the interface.
The present invention relates to a device to multiplex several supercomputers onto the same point to point communication network to more fully utilize the communication link.